﻿using System;
using System.IO;
using NUnit.Framework;
using Smartkernel;

namespace Smartkernel.NUnitTest.
{
    [Category("Core")]
    [TestFixture]
    public class SmartProcessTest
    {
        [Test]
        public void Test()
        {
            //【01】调用批处理文件的方法测试（涉及方法：CallBatchFile）
            string batchFilePath = @"C:\SmartProcessTest\BatchFileDemo.bat";
            if (!Directory.Exists(@"C:\SmartProcessTest"))
            {
                Directory.CreateDirectory(@"C:\SmartProcessTest");
            }
            if (!File.Exists(batchFilePath))
            {
                using (StreamWriter streamWriter = File.CreateText(batchFilePath))
                {
                    streamWriter.WriteLine("ping 127.0.0.1");
                }
            }
            SmartProcess.CallBatchFile(batchFilePath);

            //【02】获得进程列表的测试（涉及方法：AllProcesses）
            Assert.AreEqual(SmartProcess.AllProcesses.Count > 0, true);

            //【03】打开外部进程（涉及方法：Start、Stop）
            string calcPath = @"C:\WINDOWS\system32\calc.exe";
            SmartProcess.Start(calcPath);
            SmartProcess.Stop("calc");

            //【04】设置自动运行（涉及方法：SetAutoRun、DeleteAutoRun）
            SmartProcess.SetAutoRun(calcPath, "calc");
            SmartProcess.DeleteAutoRun("calc");

            //【05】运行命令行的DOS命令（涉及方法：ExecuteCommandLine）
            SmartProcess.ExecuteCommandLine("ping 127.0.0.1");

            //【06】复制文件的测试（涉及方法：CopyFiles）
            if (!Directory.Exists(@"C:\SmartProcessTest_Back"))
            {
                Directory.CreateDirectory(@"C:\SmartProcessTest_Back");
            }
            SmartProcess.CopyFiles(@"C:\SmartProcessTest", @"C:\SmartProcessTest_Back");
            Directory.Delete(@"C:\SmartProcessTest", true);
            Directory.Delete(@"C:\SmartProcessTest_Back", true);
        }
    }
}
